#leetcode题目560：和为k的子数组
#难度：中等

#方法：前缀和

from typing import List

class Solution:

    #leetcode官方题解，暴力枚举，原有代码无python，从java转成python而来。
    #
    def subarraySum(self, nums: List[int], k: int) -> int:
        count = 0
        for start in range(len(nums)):
            s = 0
            # 注意：原 Java 代码的内层循环是从 start 向前累加到 0
            for end in range(start, -1, -1):
                s += nums[end]
                if s == k:
                    count += 1
        return count


    #解法来自第三个视频，由java转成python而来。
    #TODO


#测试数据，注意子数组为连续子数组，所以为什么第一题为2，因为第0和3加起来为2，但是非连续
nums = [1,1,1]
k = 2
#预期输出：2

solution = Solution()
print(solution.subarraySum(nums, k))

nums = [1,2,3]
k = 3
#预期输出：2

solution = Solution()
print(solution.subarraySum(nums, k))

